//package com.lonely.framework.web.service;
//
//import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
//import com.lonely.common.core.domain.auth.LoginUser;
//import com.lonely.common.core.domain.auth.UserMsgDto;
//import com.lonely.system.domain.entity.SysUser;
//import com.lonely.common.enums.UserStatus;
//import com.lonely.common.exception.AuthException;
//import com.lonely.common.exception.BaseException;
//import com.lonely.system.service.ISysDataPermissionsService;
//import com.lonely.system.service.ISysUserService;
//import lombok.extern.slf4j.Slf4j;
//import org.springframework.beans.BeanUtils;
//import org.springframework.beans.factory.annotation.Autowired;
//import org.springframework.stereotype.Service;
//
//import java.util.HashSet;
//import java.util.Objects;
//import java.util.Set;
//
//
///**
// * 用户登录服务
// *
// * @author fzzf
// */
//@Slf4j
//@Service
//public class UserSaService {
//
//    @Autowired
//    private ISysUserService userService;
//
//    @Autowired
//    private SysPermissionService permissionService;
//
//    @Autowired
//    private ISysDataPermissionsService sysDataPermissionsService;
//
//
//    /**
//     * 用户登录
//     *
//     * @param phone
//     * @param password
//     * @return
//     */
//    public LoginUser loadUserName(String phone, String password) {
//        SysUser user = this.userService.getOne(new LambdaQueryWrapper<SysUser>().eq(SysUser::getPhone, phone));
//
//        // 前端通过 sha256加密后传入，后端不要再加密了，直接验证即可
////        String encryptedPassword= SecurityUtils.encryptPassword(password);
////        UserMsgDto user = userService.selectUserByUserName(phone);
//        if (user == null) {
//            log.info("登录用户：{} 不存在.", phone);
//            throw new AuthException("登录用户：" + phone + " 不存在");
//        } else if (!Objects.equals(password, user.getPassword())) {
//            throw new AuthException("密码错误！");
//        } else if (Objects.equals(UserStatus.DISABLE.getCode(), user.getStatus())) {
//            log.info("登录用户：{} 已被停用.", phone);
//            throw new BaseException("对不起，您的账号：" + phone + " 已停用");
//        }
//        return createLoginUser(user);
//    }
//
//
//    /**
//     * 创建登录用户对象
//     *
//     * @param user
//     * @return
//     */
//    private LoginUser createLoginUser(SysUser user) {
//        UserMsgDto userMsgDto = new UserMsgDto();
//        BeanUtils.copyProperties(user, userMsgDto);
//        userMsgDto.setUserId(user.getId());
//
//        Set<String> perms = new HashSet<>();
//        // 管理员拥有所有权限
//        if (user.isAdmin()) {
//            perms.add("*:*:*");
//        }
//        LoginUser loginUser = new LoginUser(userMsgDto, permissionService.getButtonPermission(userMsgDto));
//        loginUser.setFactoryDataPermissions(this.sysDataPermissionsService.getFactoryDataPermissions(user.getId()));
//        return loginUser;
//    }
//}
